

<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="" > <!--<![endif]-->
<head>
  <meta charset="utf-8">
  
  <meta name="viewport" content="width=device-width, initial-scale=1.0">

  
  <title>Welcome to PhysX &mdash; NVIDIA PhysX SDK 4.1 Documentation</title>
  

  
  <link rel="shortcut icon" href="_static/images/favicon.ico"/>

  
  

  

  
  
    

  
  <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
  <link rel="stylesheet" href="../_static/breathe.css" type="text/css" />
    <link rel="next" title="Snippets" href="HelloWorld.html" />
    <link rel="prev" title="PhysX License" href="License.html" />
    <link href="../_static/css/nvidia_theme.css" rel="stylesheet" type="text/css">
    
    
        <style>
            .wy-nav-content::before {
                content: "PhysX 4.1 SDK Guide";
            }
        </style>
    


  
  <script src="../_static/js/modernizr.min.js"></script>

</head>

<body class="wy-body-for-nav">

   
  <div class="wy-grid-for-nav">

    
    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
      <div class="wy-side-scroll">
        <div class="wy-side-nav-search">
          

          
            <a href="../Index.html" class="icon icon-home"> Python
          

          
          </a>

          

          
<div role="search">
  <form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
    <input type="text" name="q" placeholder="Search docs" />
    <input type="hidden" name="check_keywords" value="yes" />
    <input type="hidden" name="area" value="default" />
  </form>
</div>

          
        </div>

        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
          
            
            
              
            
            
              <ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="Index.html">User's Guide</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="License.html">PhysX License</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="">Welcome to PhysX</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#about-this-user-guide">About this User Guide</a></li>
<li class="toctree-l3"><a class="reference internal" href="#a-brief-overview-of-physx">A brief overview of PhysX</a></li>
<li class="toctree-l3"><a class="reference internal" href="#world-and-objects">World and Objects</a></li>
<li class="toctree-l3"><a class="reference internal" href="#rendering-and-visualization">Rendering and Visualization</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="HelloWorld.html">Snippets</a></li>
<li class="toctree-l2"><a class="reference internal" href="BuildingWithPhysX.html">Building with PhysX</a></li>
<li class="toctree-l2"><a class="reference internal" href="API.html">The PhysX API</a></li>
<li class="toctree-l2"><a class="reference internal" href="Startup.html">Startup and Shutdown</a></li>
<li class="toctree-l2"><a class="reference internal" href="Threading.html">Threading</a></li>
<li class="toctree-l2"><a class="reference internal" href="Geometry.html">Geometry</a></li>
<li class="toctree-l2"><a class="reference internal" href="RigidBodyOverview.html">Rigid Body Overview</a></li>
<li class="toctree-l2"><a class="reference internal" href="RigidBodyCollision.html">Rigid Body Collision</a></li>
<li class="toctree-l2"><a class="reference internal" href="RigidBodyDynamics.html">Rigid Body Dynamics</a></li>
<li class="toctree-l2"><a class="reference internal" href="Simulation.html">Simulation</a></li>
<li class="toctree-l2"><a class="reference internal" href="AdvancedCollisionDetection.html">Advanced Collision Detection</a></li>
<li class="toctree-l2"><a class="reference internal" href="Joints.html">Joints</a></li>
<li class="toctree-l2"><a class="reference internal" href="Articulations.html">Articulations</a></li>
<li class="toctree-l2"><a class="reference internal" href="Articulations.html#maximal-coordinate-and-reduced-articulations">Maximal Coordinate and Reduced Articulations</a></li>
<li class="toctree-l2"><a class="reference internal" href="Articulations.html#maximal-coordinate-articulations">Maximal Coordinate Articulations</a></li>
<li class="toctree-l2"><a class="reference internal" href="Articulations.html#reduced-coordinate-articulations">Reduced Coordinate Articulations</a></li>
<li class="toctree-l2"><a class="reference internal" href="OriginShift.html">Scene Origin</a></li>
<li class="toctree-l2"><a class="reference internal" href="GPURigidBodies.html">GPU Rigid Bodies</a></li>
<li class="toctree-l2"><a class="reference internal" href="GeometryQueries.html">Geometry Queries</a></li>
<li class="toctree-l2"><a class="reference internal" href="SceneQueries.html">Scene Queries</a></li>
<li class="toctree-l2"><a class="reference internal" href="Vehicles.html">Vehicles</a></li>
<li class="toctree-l2"><a class="reference internal" href="CharacterControllers.html">Character Controllers</a></li>
<li class="toctree-l2"><a class="reference internal" href="DebugVisualization.html">Debug Visualization</a></li>
<li class="toctree-l2"><a class="reference internal" href="VisualDebugger.html">PhysX Visual Debugger (PVD)</a></li>
<li class="toctree-l2"><a class="reference internal" href="Statistics.html">Simulation Statistics</a></li>
<li class="toctree-l2"><a class="reference internal" href="Serialization.html">Serialization</a></li>
<li class="toctree-l2"><a class="reference internal" href="ExtendingSerialization.html">Extending Serialization</a></li>
<li class="toctree-l2"><a class="reference internal" href="BestPractices.html">Best Practices Guide</a></li>
<li class="toctree-l2"><a class="reference internal" href="MigrationFrom28.html">Migrating From PhysX SDK 2.x to 3.x</a></li>
<li class="toctree-l2"><a class="reference internal" href="MigrationTo33.html">Migrating From PhysX SDK 3.2 to 3.3</a></li>
<li class="toctree-l2"><a class="reference internal" href="MigrationTo34.html">Migrating From PhysX SDK 3.3 to 3.4</a></li>
<li class="toctree-l2"><a class="reference internal" href="MigrationTo40.html">Migrating From PhysX SDK 3.4 to 4.0</a></li>
</ul>
</li>
</ul>

            
          
        </div>
      </div>
    </nav>

    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">

      
      <nav class="wy-nav-top" aria-label="top navigation">
        
          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
          <a href="../Index.html">Python</a>
        
      </nav>


      <div class="wy-nav-content">
        
        <div class="rst-content">
        
          















<div role="navigation" aria-label="breadcrumbs navigation">

  <ul class="wy-breadcrumbs">
    
      <li><a href="../Index.html">Docs</a> &raquo;</li>
        
          <li><a href="Index.html">User's Guide</a> &raquo;</li>
        
      <li>Welcome to PhysX</li>
    
    
      <li class="wy-breadcrumbs-aside">
        
            
        
      </li>
    
  </ul>

  
  <hr/>
</div>
          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
           <div itemprop="articleBody">
            
  <span class="target" id="introduction"></span><div class="section" id="welcome-to-physx">
<h1>Welcome to PhysX<a class="headerlink" href="#welcome-to-physx" title="Permalink to this headline">¶</a></h1>
<p>Welcome to the NVIDIA® PhysX® SDK version 4!  Unlike the change from version 2 to 3, the upgrade to version 4 does not bring any significant API changes, and in fact most interfaces have not changed since version 3.4.  The behaviors of existing algorithms have also largely stayed the same.  Migrating to version 4 should be very easy and straightforward -- see <a class="reference internal" href="MigrationTo40.html#migrationto40"><em>Migrating From PhysX SDK 3.4 to 4.0</em></a>.  Nonetheless we have decided to mark this release with a major version increment because we believe it is hard to overstate the significance of two major innovations we have added:  The TGS solver and the reduced coordinate articulations feature.  These new simulation options are taking PhysX from being a leading game engine technology to also being a highly accurate engineering simulation tool suitable for robotics R&amp;D and reinforcement learning, while maintaining best in class performance for all application domains.  See <a class="reference internal" href="RigidBodyDynamics.html#temporalgaussseidel"><em>Temporal Gauss-Seidel</em></a> and <a class="reference internal" href="Articulations.html#articulations"><em>Articulations</em></a> for more information on these new features.</p>
<div class="section" id="about-this-user-guide">
<h2>About this User Guide<a class="headerlink" href="#about-this-user-guide" title="Permalink to this headline">¶</a></h2>
<p>This Guide will help the reader to understand the features of the PhysX SDK and how to make use of them. The Guide is not exhaustive on the details of the API; the reader should refer to the PhysX API Reference Documentation for this. ( See Documentation/physxapi/_build/html under the main directory where the PhysX
SDK distro was unpacked.) Furthermore this guide does not currently go into detail about the algorithms used in PhysX.</p>
<p>The github PhysX 4 Issues page is a good place to ask questions and report bugs.</p>
</div>
<div class="section" id="a-brief-overview-of-physx">
<h2>A brief overview of PhysX<a class="headerlink" href="#a-brief-overview-of-physx" title="Permalink to this headline">¶</a></h2>
<p>PhysX is a library for representing three dimensional worlds made of discrete entities named actors which can in turn be composed of multiple shapes.  PhysX lets the user create and destroy such actors, and tracks their explicit or proximity based interactions.  Actors can either be static, be moved around by the user, or be moved by PhysX according to the laws of classical mechanics.  PhysX' dynamics simulation capability includes support for collision, joints and actuation using maximal and/or reduced coordinates.  Furthermore, the world may be queried by the user using a number of different tools ranging from simple ray-casts to sweep and overlap tests.  PhysX provides extensions for special purpose functionality such as vehicle simulation.</p>
<p>PhysX is designed to be robust, high performance, scalable, portable, as well as easy to integrate and use.  These capabilities make PhysX suitable as a foundation technology for game engines and other real time simulation systems.</p>
<p>It is important to note that PhysX does not run any code on GPUs by default.  However PhysX can be configured to take advantage of CUDA capable GPUs, which provides a performance benefit proportional to the arithmetic complexity of a scene.  GPU acceleration extensions are provided as an optional binary DLL.  See <a class="reference internal" href="GPURigidBodies.html#gpurigidbodies"><em>GPU Rigid Bodies</em></a> for details on how to enable GPU acceleration.  Even without GPU acceleration, PhysX is fully multithreaded and SIMD-accelerated to take full advantage of modern multi-core CPUs.</p>
</div>
<div class="section" id="world-and-objects">
<h2>World and Objects<a class="headerlink" href="#world-and-objects" title="Permalink to this headline">¶</a></h2>
<dl class="docutils">
<dt>The basic concepts of the world within a PhysX simulation are easy to describe:</dt>
<dd><ul class="first last simple">
<li>The PhysX world comprises a collection of Scenes, each containing objects called Actors;</li>
<li>Each Scene defines its own reference frame encompassing all of space and time;</li>
<li>Actors in different Scenes do not interact with each other;</li>
<li>Characters and vehicles are complex specialized objects made from Actors;</li>
<li>Actors have physical state : position and orientation; velocity or momentum; energy;  etc,</li>
<li>Actor physical state may evolve over time due to applied forces, constraints such as joints or contacts, and interactions between Actors.</li>
</ul>
</dd>
</dl>
</div>
<div class="section" id="rendering-and-visualization">
<h2>Rendering and Visualization<a class="headerlink" href="#rendering-and-visualization" title="Permalink to this headline">¶</a></h2>
<p>3d rendering will of course be a vital technology to visualize the simulated world in almost every application.  Production quality graphics and audio are
outside the scope of PhysX.  At the minimum the user needs to take the updated state of any moved visible actors and update them in the respective rendering representation.  Some of our example programs come with rudimentary built-in visualization, and we also provide a stand-alone debugging tool called PhysX Visual Debugger (PVD).  PVD provides a graphical view of the PhysX scene together with various tools to inspect and visualize variables of every PhysX object. Additionally it can also record and visualize memory and timing data. See <a class="reference internal" href="VisualDebugger.html#physxvisualdebugger"><em>PhysX Visual Debugger (PVD)</em></a> for details.</p>
</div>
</div>


           </div>
           
          </div>
          <footer>
  
    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
      
        <a href="HelloWorld.html" class="btn btn-neutral float-right" title="Snippets" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
      
      
        <a href="License.html" class="btn btn-neutral" title="PhysX License" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
      
    </div>
  

  <hr/>

  <div role="contentinfo">
    <p>
        &copy; Copyright 2008-2021 NVIDIA Corporation, 2788 San Tomas Expressway, Santa Clara, CA 95051 U.S.A. All rights reserved

    </p>
  </div> 

</footer>

        </div>
      </div>

    </section>

  </div>
  


  

    
    
      <script type="text/javascript">
          var DOCUMENTATION_OPTIONS = {
              URL_ROOT:'../',
              VERSION:'4.1',
              LANGUAGE:'',
              COLLAPSE_INDEX:false,
              FILE_SUFFIX:'.html',
              HAS_SOURCE:  true,
              SOURCELINK_SUFFIX: ''
          };
      </script>
        <script type="text/javascript" src="../_static/jquery.js"></script>
        <script type="text/javascript" src="../_static/underscore.js"></script>
        <script type="text/javascript" src="../_static/doctools.js"></script>
    

  

  <script type="text/javascript" src="../_static/js/theme.js"></script>

  <script type="text/javascript">
      jQuery(function () {
          SphinxRtdTheme.Navigation.enable(false);
      });
  </script> 

</body>
</html>